package com.zhangshitong.fiveCharacpter;

/**
 * 数组的插入、删除、按照下标随机访问
 * 数组中的数据类型是整型
 * @author Joy
 *
 */
public class Array {

	private int[] data;
	
	private int n;
	
	private int count;//定义中实际个数
	
	//构造方法，定义数组大小
	public Array(int capacity){
		this.data = new int[capacity];
		this.n = capacity;
		this.count = 0; //刚开始一个数都没有存，所以为0
	}
	
	//根据索引找到数据中的元素
	public int find(int index){
		if(index < 0 || index >=n)
			return -1;
		return data[index];
	}
	
	//插入元素:头部插入，底部插入
	public boolean insert(int index , int value){
		//数组空间已满
		if(count == n){
			System.out.println("没有可插入的位置了");
			return false;
		}
		
		//如果count没有满，那么就可以插入数据到数组中了
		//插入位置不合法
		if(index < 0 || index > count){
			System.out.println("插入位置不合法");
			return false;
		}
		//这里只能用for循环的--方式，而不能用++方式
		for(int i = count ;i > index ; i--){
			data[i] = data[i-1];
		}
		data[index] = value;
		++count;
		return true;
	}
	
	
	//根据索引，删除数组中的元素
	public boolean delete(int index){
		if(index < 0 || index >=count) return false;
		//从删除位置开始，将后面的元素向前移动一位
		for(int i = index ;i<count-1 ;i++){
			data[i] = data[i+1];
		}
		--count;
		return true;
	}
	
	public void printAll(){
		for(int i =0; i<count; i++){
			System.out.println(data[i] + " ");
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
        Array array = new Array(5);
        array.printAll();
        array.insert(0, 3);
        array.insert(0, 4);
        array.insert(1, 5);
        array.insert(3, 9);
        array.insert(3, 10);
        //array.insert(3, 11);
        array.printAll();
        System.out.println("-----");
        array.delete(2);
        array.printAll();
	}
}
